This invention relates to data processing equipment and more particularly to circuits for efficiently specifying and operating upon data fields of any length without regard to the location of these fields within memory words and without regard to memory word boundaries. Appropriate use of this general capability enables a string and table manipulating capability, and a general push-down stack capability.
A recurring problem for the data processing system programmer is the requirement to operate on variable sized fields within words since a typical complement of peripheral devices will demand data of various word lengths and formats. In real-time process control systems the problem is compounded. First, the numerous hardware interfaces under direct control of the computer are typically designed for specific functions utilizing control words that optimize the performance of the hardware, rather than interface efficiently with the computer. These hardware control words are frequently of variable sizes and are broken up into sub-fields that are themselves variable. Second, a computer operating in real-time must handle these variable field operations in a minimum amount of time. These variable field operations are typically handled by software subroutines that extract the variable fields from the standard memory words, or by hardware interface units. Examples of such units are disclosed in DeSantis et al U.S. Pat. No. 3,680, 058 and Downing et al U.S. Pat. No. 3,430,202.
A related problem which occurs in all forms of programming but is of special importance to the real-time programmer is the problem of efficiently creating temporary storage for intermediate values while a program is being run, and storing these intermediate values as the CPU branches or is interrupted from one program to another. These intermediate values are commonly stored in a push-down stack. A push-down stack capability is commonly implemented from an area in main memory reserved for this purpose, a pointer pointing to the top or last word in the memory stack and some instructions in the vocabulary along with the necessary hardware to permit manipulation of the pointer and access to words in the stack.